home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / ead / ead23.dms / ead23.adf / Listati / MClock.asm < prev    next >
Assembly Source File  |  1990-05-29  |  9KB  |  308 lines

  1. *****************************************************************************
  2. *                                                                           *
  3. * Programma .... Memory Clock                                               *
  4. *                                                                           *
  5. * Autore ....... Roger Fischlin                                             *
  6. *                                                                           *
  7. * Versione ..... 1.00i                                                      *
  8. *                                                                           *
  9. * Software ..... HiSoft Devpac V2.14                                        *
  10. *                                                                           *
  11. * Hardware ..... Amiga 500/1000/2000/2500, Kickstart V1.2/1.3               *
  12. *                                                                           *
  13. * Note ......... Revisione ed adattamento per EAD di Luigi Callegari        *
  14. *                                                                           *
  15. *****************************************************************************
  16.  
  17.     incdir   "dh1:includedevpac/" ; Modificare per propria directory
  18.  
  19.          include  intuition/intuition.i
  20.          include  intuition/intuition_lib.i
  21.          include  exec/memory.i
  22.          include  exec/exec_lib.i
  23.          include  graphics/graphics_lib.i
  24.          include  libraries/dos_lib.i
  25.          include  libraries/dos.i
  26.          include  graphics/text.i
  27.  
  28. PRINT    macro    ; Macrodefinizione per stampa testi su finestra
  29.          move     #\1,d0    
  30.          move     #\2,d1    
  31.          move.l   MiaWindow,a1
  32.          move.l   wd_RPort(a1),a1
  33.          CALLGRAF Move        
  34.          move     #\3,d0    
  35.          move.l   MiaWindow,a1
  36.          move.l   wd_RPort(a1),a1
  37.          CALLGRAF SetAPen
  38.          lea      \4,a0    
  39.          move.l   #\5,d0    
  40.          move.l   MiaWindow,a1        
  41.          move.l   wd_RPort(a1),a1    
  42.          CALLGRAF Text
  43.          endm
  44.  
  45. _main    lea      dosname,a1  ; Apertura della dos.library
  46.          moveq    #0,d0
  47.          CALLEXEC OpenLibrary
  48.          tst.l    d0
  49.          beq      abbruch
  50.          move.l   d0,_DOSBase     
  51.          lea      intname,a1  ; Apertura Intuition.library
  52.          moveq    #0,d0        
  53.          CALLEXEC OpenLibrary
  54.          tst.l    d0
  55.          beq      closedos    
  56.          move.l   d0,_IntuitionBase 
  57.          lea      grafname,a1 ; Apertura Graphics.library
  58.          moveq    #0,d0
  59.          CALLEXEC OpenLibrary
  60.          tst.l    d0
  61.          beq      closeint
  62.          move.l   d0,_GfxBase  
  63.          lea      windowdef,a0   ; Apertura finestra
  64.          CALLINT  OpenWindow    
  65.          tst.l    d0     
  66.          beq      closegraf    
  67.          move.l   d0,MiaWindow
  68.          lea.l    FONT,a0        ; Fonte in ROM Topaz.80 
  69.          CALLGRAF OpenFont       ; Apre fonte di default
  70.          move.l   d0,Font
  71.          tst.l    d0
  72.          beq      closewindow
  73.          move.l   d0,a0
  74.          move.l   MiaWindow,a1
  75.          move.l   wd_RPort(a1),a1
  76.          CALLGRAF SetFont
  77.  
  78. Schleife PRINT    5,18,3,Text1,4 ; Produce i testi
  79.          PRINT    5,28,3,Text2,4
  80.          PRINT    5,39,3,Text3,4
  81.          PRINT    5,49,3,Text4,4
  82.          moveq    #MEMF_PUBLIC,d1; Alloca memoria 
  83.          CALLEXEC AvailMem        
  84.          move.l   d0,d2 
  85.          lea      buffer,a0    
  86.          bsr      makeASCII      ; Trasforma in ASCII
  87.          PRINT    45,18,1,buffer,8
  88.          moveq    #MEMF_CHIP,d1  ; dasselbe wie oben, nur mit Chip-RAM 
  89.          CALLEXEC AvailMem
  90.          move.l   d0,d2 
  91.          lea      buffer,a0    
  92.          bsr      makeASCII
  93.          PRINT    45,28,1,buffer,8
  94.          move.l   #Zeit,d1    ; Ora in D1
  95.          CALLDOS  DateStamp
  96.          move.l   Zeit+8,d0   ; 1/50 sec in dieser Minute in Sekunden 
  97.          divu     #50,d0      
  98.          and.l    #$ff,d0
  99.          lea.l    Time+6,a0
  100.          bsr      Convert    
  101.          move.l   Zeit+4,d0
  102.          divu     #60,d0
  103.          and.l    #$ff,d0
  104.          lea.l    Time,a0
  105.          bsr      Convert
  106.          move.l   Zeit+4,d0
  107.          divu     #60,d0
  108.          lsr.l    #8,d0    
  109.          lsr.l    #8,d0    
  110.          and.l    #$ff,d0
  111.          lea.l    Time+3,a0   
  112.          bsr      Convert
  113.          move.l   Zeit,d0     
  114.          lea.l    Jahre,a0
  115.          move.l   #77,d1    
  116.  
  117. label1   addq     #1,d1
  118.          sub.w    (a0)+,d0
  119.          bpl      label1
  120.          add.w    -(a0),d0
  121.          move.l   d0,d5
  122.          move.l   (a0),d6
  123.          and.l    #$ff,d1
  124.          cmp.w    #99,d1
  125.          bls      label2
  126.          sub.w    #100,d1
  127.  
  128. label2   move.l    d1,d0
  129.          and.l    #$ff,d0
  130.          lea.l    Date+6,a0
  131.          bsr    Convert
  132.          btst    #0,d6
  133.          beq    label3
  134.          lea.l    KeinSJahr,a0
  135.          bra    label4
  136.  
  137. label3   lea.l    Schaltjahr,a0
  138. label4   move.l   #-1,d1
  139. label5   addq     #1,d1
  140.          sub.w    (a0)+,d5
  141.          bpl      label5
  142.          add.w    -(a0),d5
  143.          move.l   d1,d0
  144.          and.l    #$ff,d0
  145.          lea.l    Date+3,a0
  146.          bsr      Convert        ; in ASCII
  147.          move.l   d5,d0
  148.          and.l    #$ff,d0
  149.          lea.l    Date+0,a0
  150.          bsr      Convert
  151.          PRINT    45,39,1,Time,8
  152.          PRINT    45,49,1,Date,8
  153.          move     #0,d0
  154.          move     #31,d1
  155.          move.l   MiaWindow,a1
  156.          move.l   wd_RPort(a1),a1
  157.          CALLGRAF Move
  158.          move     #1,d0
  159.          move.l   MiaWindow,a1
  160.          move.l   wd_RPort(a1),a1
  161.          CALLGRAF SetAPen
  162.          move     #135,d0
  163.          move     #31,d1
  164.          move.l   MiaWindow,a1
  165.          move.l   wd_RPort(a1),a1
  166.          CALLGRAF Draw
  167.  
  168.          move.l   MiaWindow,a0        ; CloseWindow ?
  169.          move.l   wd_UserPort(a0),a0
  170.          CALLEXEC GetMsg
  171.          tst.l    d0
  172.             bne      ende
  173.  
  174.          move.l   #40,d1
  175.          CALLDOS  Delay
  176.          bra      Schleife
  177.  
  178. ende     move.l   d0,a1
  179.          CALLEXEC ReplyMsg
  180.          move.l   Font,a1     ; alles schließen
  181.          CALLGRAF CloseFont
  182. closewindow       move.l      MiaWindow,a0        
  183.          CALLINT  CloseWindow
  184. closegraf         move.l      _GfxBase,a1        
  185.          CALLEXEC  CloseLibrary
  186. closeint move.l   _IntuitionBase,a1
  187.          CALLEXEC             CloseLibrary
  188. closedos move.l   _DOSBase,a1
  189.          CALLEXEC CloseLibrary
  190. abbruch  moveq    #0,d0            
  191.          rts                
  192.  
  193. makeASCII
  194.          moveq    #7,d0
  195.          lea.l    buffer,a0    
  196.          lea.l    Potenzen,a1    
  197. next     move     #"0",d1
  198. labela   addq     #1,d1    
  199.          sub.l    (a1),d2    
  200.          bcc      labela    
  201.          subq     #1,d1    
  202.          add.l    (a1),d2    
  203.          move.b   d1,(a0)+    
  204.          tst.l    (a1)+
  205.          dbra     d0,next
  206.          moveq    #6,d0    
  207.          lea      buffer,a0
  208. clear    cmp.b    #'0',(a0)
  209.          bne      fini
  210.          move.b   #' ',(a0)+
  211.          dbra     d0,clear    
  212. fini     rts
  213.  
  214. Potenzen dc.l     10000000
  215.          dc.l     1000000
  216.          dc.l     100000
  217.          dc.l     10000
  218.          dc.l     1000
  219.          dc.l     100
  220.          dc.l     10
  221.          dc.l     1
  222.          dc.l     0
  223.  
  224. W_Gadgets equ   WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!WINDOWSIZING
  225. W_Extras  equ   SMART_REFRESH!ACTIVATE
  226. Text1    dc.b     "RAM "
  227.          even
  228. Text2    dc.b     "Chip"
  229.          even
  230. Text3    dc.b     "Time"
  231.          even
  232. Text4    dc.b     "Date"
  233.          even
  234. Time     dc.b     "xx:xx:xx"
  235.          even
  236. Date     dc.b     "xx.xx.xx"
  237.     even
  238.  
  239. windowdef      dc.w           500,140
  240.          dc.w     135,53
  241.          dc.b     -1,-1    
  242.          dc.l     CLOSEWINDOW    
  243.             dc.l     W_Gadgets!W_Extras  
  244.          dc.l     0    
  245.          dc.l     0    
  246.          dc.l     0
  247.          dc.l     0    
  248.          dc.l     0    
  249.          dc.w     135,21
  250.             dc.w     135,53
  251.          dc.w     WBENCHSCREEN    
  252.  
  253. intname           INTNAME    
  254. grafname          GRAFNAME
  255. dosname           DOSNAME    
  256. buffer            ds.b        10
  257. Zeit              ds.l        3
  258. _IntuitionBase    ds.l        1    
  259. _GfxBase          ds.l        1
  260. _DOSBase          ds.l        1
  261. MiaWindow         ds.l        1
  262.  
  263. TEXT              ds.b     2
  264. Font              dc.l     0
  265. FONT              dc.l     fontname
  266.                   dc.w     TOPAZ_EIGHTY
  267.                   dc.b     FS_NORMAL
  268.                   dc.b     FPF_ROMFONT
  269.                   even
  270. fontname dc.b     "topaz.font",0
  271.          even
  272. Convert  move.l   d0,d4
  273.          divu     #10,d0
  274.          move.l   d0,d2
  275.          mulu     #10,d2
  276.          add.w    #"0",d0
  277.          move.b   d0,(a0)+
  278.          sub.w    d2,d4
  279.          add.w    #"0",d4
  280.          move.b   d4,(a0)+
  281.          rts
  282. Jahre    dc.w     365,365
  283.          dc.w     366,365,365,365,365
  284.          dc.w     366,365,365,365,365
  285.          dc.w     366,365,365,365,365
  286.          dc.w     366,365,365,365,365
  287.          dc.w     366,365,365,365,365
  288.          dc.w     365,365,365,365,365
  289.          dc.w     366,365,365,365,365
  290.          dc.w     366,365,365,365,365
  291.          dc.w     366,365,365,365,365
  292.          dc.w     366,365,365,365,365
  293.          dc.w     366,365,365,365,365
  294.          dc.w     366,365,365,365,365
  295.          dc.w     366,365,365,365,365
  296.          dc.w     366,365,365,365,365
  297.          dc.w     366,365,365,365,365
  298.          dc.w     366,365,365,365,365
  299.  
  300. KeinSJahr    dc.w    31,28,31,30,31,30,31,31,30,31,30,31
  301. Schaltjahr    dc.w    31,29,31,30,31,30,31,31,30,31,30,31
  302.  
  303.  
  304.     
  305.     
  306.     
  307.  
  308.